#pragma once

class CLock
{
public:
	virtual ~CLock() = 0 {};
	virtual void Apply()=0;
	virtual void Release()=0;
protected:
	HANDLE m_hLock;
};

class CMutex : public CLock
{
public:
	CMutex();
	~CMutex();
	virtual void Apply();
	virtual void Release();
};


class CSemaphore : public CLock
{
public:
	CSemaphore(int SemaphoreCnt =1);
	~CSemaphore();
	virtual void Apply();
	virtual void Release();
};
